home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 58189 / 58189.xpi / modules / PolicyManager.jsm < prev    next >
Text File  |  2010-01-06  |  2KB  |  66 lines

  1. /*
  2.  * This class manages the policies in use. This includes a client policy and
  3.  * several server policies. Actual decisions are made by the policy objects
  4.  * themselves.
  5.  */
  6.  
  7. var EXPORTED_SYMBOLS = [ ];
  8. Components.utils.import("resource://csfiremodules/CsFireCommon.jsm");
  9.  
  10. CsFire.PolicyManager = new function() {
  11.     this.enabled = true;
  12. }
  13.  
  14. /*
  15.  * This function delegates decision making for a certain request.
  16.  * This decision will be dependent on the actual policy that will be used.
  17.  */ 
  18. CsFire.PolicyManager.decide = function(data) {
  19.     this._logDecisionData(data);
  20.     
  21.     var decision;
  22.     if(this.enabled === true) {
  23.         //Check if the request is whitelisted
  24.         decision = CsFire.Whitelist.decide(data);
  25.         if(decision == null) {
  26.             //It is not, so check the server policy
  27.             //TODO FUTURE Check server policy here (to be implemented)
  28.             if(decision == null) {
  29.                 //No server policy, use autonomous client policy
  30.                 decision = CsFire.ClientPolicy.decide(data); 
  31.             }
  32.         }
  33.     }
  34.     else {
  35.         decision = { "action": CsFire.Policy.DISABLED };
  36.     }
  37.     CsFire.Logger.debug("Policy decision: " + CsFire.Policy.textualDecision(decision));
  38.     return decision;
  39. }
  40.  
  41. /*
  42.  * Switches the "enabled" status of the policy
  43.  */
  44. CsFire.PolicyManager.switchEnabledStatus = function() {
  45.     this.enabled = !(this.enabled);
  46.     CsFire.Logger.debug("Policy status changed (enabled: " + this.enabled + ")");
  47. }
  48.  
  49. /*
  50.  * Retrieves the enabled status of the policy
  51.  */
  52. CsFire.PolicyManager.isEnabled = function() {
  53.     return this.enabled;
  54. }
  55.  
  56. /*
  57.  * Logs the decision data to the error console for debugging
  58.  */
  59. CsFire.PolicyManager._logDecisionData = function(data) {
  60.     var dbg = "";
  61.     for(var x in data) { 
  62.         dbg += (x + ": " + data[x] + "  |  ");
  63.     }
  64.     CsFire.Logger.debug("Decision data: " + dbg);
  65. }
  66.